#ifndef EXCEPCIONBASICA_H
#define EXCEPCIONBASICA_H

#include <iostream>
using namespace std;

/**
 * Clase ExcepcionBasica que proporciona
 * la información básica de una excepción
 */
class ExcepcionBasica {
	// Razón de la excepción
	string _razon;
	// Método donde se produce la excepción
	string _metodo;

public:
	// Constructor
	ExcepcionBasica (const string &razon, const string &metodo): _razon(razon),_metodo(metodo) {}

	// Métodos
	const string &getRazon() const {
		return _razon;
	}

	const string &getMetodo() const {
		return _metodo;
	}

};

/**
 * Sobreescritura del operador "<<" para visualizar el motivo de la excepción
 */
ostream& operator<<(ostream &os, const ExcepcionBasica& exc)
{
   os << "Error en el método [" << exc.getMetodo() << "] - " << exc.getRazon();
   return os;
}

#endif